home *** CD-ROM | disk | FTP | other *** search
/ CD Ware Multimedia 1995 May / cd Ware (Juegos) Epimundo.iso / DOS / PRGMMING / PBC30.ZIP / EWINDMAC.BAS < prev    next >
Encoding:
BASIC Source File  |  1994-11-12  |  3.5 KB  |  114 lines

  1. '   +----------------------------------------------------------------------+
  2. '   |                                                                      |
  3. '   |        PBClone  Copyright (c) 1990-1994  Thomas G. Hanlin III        |
  4. '   |                                                                      |
  5. '   +----------------------------------------------------------------------+
  6.  
  7.  
  8.    DECLARE SUB DelayV (BYVAL MilliSeconds%)
  9.    DECLARE SUB EXQPrintC (st$, BYVAL Row%, BYVAL Column%, BYVAL Fore%, BYVAL Back%)
  10.    DECLARE SUB UnCalcAttr (Foreground%, Background%, BYVAL VAttr%)
  11.  
  12. SUB EWindowManagerC (TopRow%, LeftCol%, BottomRow%, RightCol%, Frame%, Fore%, Back%, Grow%, Shade%, S1%, S2%, TitleFore%, Title$)
  13.    IF Grow% THEN
  14.       XD% = RightCol% - LeftCol% + 1
  15.       YD% = BottomRow% - TopRow% + 1
  16.       Y1% = TopRow% + YD% \ 2
  17.       X1% = LeftCol% + XD% \ 2
  18.       Y2% = BottomRow% - YD% \ 2
  19.       X2% = RightCol% - XD% \ 2
  20.       IF YD% > XD% THEN
  21.          XDelta% = 1
  22.          YDelta% = (YD% + XD% \ 2) \ XD%
  23.          IF YDelta% < 1 THEN YDelta% = 1
  24.       ELSE
  25.          YDelta% = 1
  26.          XDelta% = (XD% + YD% \ 2) \ YD%
  27.          IF XDelta% < 1 THEN XDelta% = 1
  28.       END IF
  29.       DO
  30.          Y1% = Y1% - YDelta%
  31.          IF Y1% < TopRow% THEN Y1% = TopRow%
  32.          X1% = X1% - XDelta%
  33.          IF X1% < LeftCol% THEN X1% = LeftCol%
  34.          Y2% = Y2% + YDelta%
  35.          IF Y2% > BottomRow% THEN Y2% = BottomRow%
  36.          X2% = X2% + XDelta%
  37.          IF X2% > RightCol% THEN X2% = RightCol%
  38.          GOSUB MakeWindow
  39.          IF Grow% > 0 THEN DelayV Grow%
  40.       LOOP UNTIL Y1% = TopRow% AND X1% = LeftCol% AND Y2% = BottomRow% AND X2% = RightCol%
  41.    ELSE
  42.       Y1% = TopRow%
  43.       X1% = LeftCol%
  44.       Y2% = BottomRow%
  45.       X2% = RightCol%
  46.       GOSUB MakeWindow
  47.    END IF
  48.  
  49.    EXIT SUB
  50.  
  51.  
  52.  
  53. MakeWindow:
  54.    tmp% = X2% - X1% + 1
  55.    IF Frame% AND 1 THEN
  56.       TopSt$ = STRING$(tmp%, "─")
  57.    ELSE
  58.       TopSt$ = STRING$(tmp%, "═")
  59.    END IF
  60.    MidSt$ = SPACE$(tmp%)
  61.    BotSt$ = TopSt$
  62.    SELECT CASE Frame%
  63.       CASE 1
  64.          TopSt$ = "┌" + TopSt$ + "┐"
  65.          MidSt$ = "│" + MidSt$ + "│"
  66.          BotSt$ = "└" + BotSt$ + "┘"
  67.       CASE 2
  68.          TopSt$ = "╔" + TopSt$ + "╗"
  69.          MidSt$ = "║" + MidSt$ + "║"
  70.          BotSt$ = "╚" + BotSt$ + "╝"
  71.       CASE 3
  72.          TopSt$ = "╓" + TopSt$ + "╖"
  73.          MidSt$ = "║" + MidSt$ + "║"
  74.          BotSt$ = "╙" + BotSt$ + "╜"
  75.       CASE 4
  76.          TopSt$ = "╒" + TopSt$ + "╕"
  77.          MidSt$ = "│" + MidSt$ + "│"
  78.          BotSt$ = "╘" + BotSt$ + "╛"
  79.       CASE 5
  80.          TopSt$ = STRING$(tmp% + 2, "▄")
  81.          MidSt$ = "▌" + MidSt$ + "▐"
  82.          BotSt$ = STRING$(tmp% + 2, "▀")
  83.       CASE ELSE
  84.          TopSt$ = SPACE$(tmp% + 2)
  85.          MidSt$ = TopSt$
  86.          BotSt$ = TopSt$
  87.    END SELECT
  88.  
  89.    Row% = Y1% - 1
  90.    Col% = X1% - 1
  91.    IF LEN(Title$) > 0 AND LEN(TopSt$) >= 4 THEN
  92.       St$ = LEFT$(Title$, LEN(TopSt$) - 4)
  93.       MID$(TopSt$, 2) = "[" + St$ + "]"
  94.       EXQPrintC TopSt$, Row%, Col%, Fore%, Back%
  95.       EXQPrintC St$, Row%, Col% + 2, TitleFore%, Back%
  96.    ELSE
  97.       EXQPrintC TopSt$, Row%, Col%, Fore%, Back%
  98.    END IF
  99.    FOR Row% = Y1% TO Y2%
  100.       EXQPrintC MidSt$, Row%, Col%, Fore%, Back%
  101.    NEXT
  102.    EXQPrintC BotSt$, Y2% + 1, Col%, Fore%, Back%
  103.  
  104.    Col% = X1% - 3
  105.    IF Shade% THEN
  106.       UnCalcAttr SFore%, SBack%, Shade%
  107.       FOR Row% = Y1% TO Y2% + 1
  108.          EXQPrintC "░░", Row%, Col%, SFore%, SBack%
  109.       NEXT
  110.       EXQPrintC STRING$(X2% - X1% + 3, "░"), Y2% + 2, Col%, SFore%, SBack%
  111.    END IF
  112.    RETURN
  113. END SUB
  114.